/*
 * UMediaFileFormatUtil.cpp
 *
 *  Created on: 2020年8月13日
 *      Author: chuan
 */

#include "UMediaFileFormatUtil.h"
#include "UMediaFileFormat.h"
#include "Path.h"
#include "TStringUtil.h"


struct FileExt
{
    UMediaFileFormat fmt;
    const char* ext;
};

static FileExt s_fileExts[] = {
    {UMEDIA_FILE_UMF, ".umf"},

    {UMEDIA_FILE_TS, ".ts"},
    {UMEDIA_FILE_PS, ".ps"},
    {UMEDIA_FILE_FLV, ".flv"},
    {UMEDIA_FILE_MP4, ".mp4"},

    {UMEDIA_FILE_MKV, ".mkv"},
};


UMediaFileFormatUtil::UMediaFileFormatUtil()
{
}

UMediaFileFormatUtil::~UMediaFileFormatUtil()
{
}

const char* UMediaFileFormatUtil::getFileExt(int fileFormat)
{
    int count = sizeof(s_fileExts)/sizeof(s_fileExts[0]);
    for (int i = 0; i < count; ++ i)
    {
        if (fileFormat == s_fileExts[i].fmt)
        {
            return s_fileExts[i].ext;
        }
    }
    return "";
}

int UMediaFileFormatUtil::parseFileFormat(const char* filename)
{
    std::string fileExt = comn::Path::getFileExt(filename);

    return getFileFormat(fileExt.c_str());
}

int UMediaFileFormatUtil::getFileFormat(const char* ext)
{
    std::string fileExt(ext);
	if (!comn::StringUtil::startsWith(fileExt, "."))
	{
		fileExt.insert(0, ".");
	}

    int count = sizeof(s_fileExts)/sizeof(s_fileExts[0]);
    for (int i = 0; i < count; ++ i)
    {
        if (fileExt == s_fileExts[i].ext)
        {
            return s_fileExts[i].fmt;
        }
    }
    return UMEDIA_FILE_NONE;
}
